
'use strict'

const http = require('http')
// const { buffer } = require('stream/consumers')

let html = `
    <!DOCTYPE html>
    <html>
        <head>
            <title>First HTTP</title>
        </head>
        <body>
            你好
        </body>
    <html> `
    let routerTable = {
        '/':async(request,response)=>{
            response.setHeader('content-type', 'text/html; charset=utf-8')
            response.end(html)

        },
        '/test':async(request,response)=>{
            let status =parseInt(Math.random() * 200) +199
            response.statusCode = status
            response.end('test end')
        },
        '/data':async(request,response)=>{
            let bufferLength=0
            let bufferList =[]
            request.on('data',chunk => {
                bufferLength += chunk.length
                bufferList.push(chunk)
            })
            
            let bodyData = null
            request.on('end',()=>{
                if(bufferList.length>0){
                    bodyData = Buffer.concat(bufferList,bufferLength)
                    bufferList=[]
                }
                if(bodyData) {
                    response.end(bodyData)
                }else{
                    response.end()
                }
        
            })
        }
    }
http.createServer((request, response) => {
    
        if(!routerTable[request.url]){
            response.statusCode = 404
            response.end('page not found')
            return
        }
        routerTable[request.url](request,response)
})
  

.listen(3456)
/***
 * .jpg .jpeg  --> image/jpeg
 * .png -->image/png
 * .gif ---> image/gif
 * .ico ===>image/x-icon
 * .txt ->text/plain
 * .json ->text/json 或application/json
 * .xml  -->text/xml 或 application/xml
 */